package corelayer;

import java.util.List;
import java.util.Queue;

/**
 * ノードを表すモデルです
 */
public interface INode {

    /**
     * ノードを示すIDです
     */
    String getID();
    
    /**
     * 送信待ちのキューを返します。
     */
    List<IPacket> getSendQueue();

    /**
     * 最近すれ違ったノードのリストを返します
     */
    List<INode> getRecentlyCrossed();

    /**
     * ノードのオーナーが送信したメッセージを保持します
     */
    List<IMessage> getOwnMessages();

    /**
     * パケットを周りの端末へブロードキャストします
     *
     * @param packet 送信するパケット
     */
    void broadcast(IPacket packet);
    
    /**
     * ユーザーからのメッセージ送信リクエストを受け付けます
     */
    void pushUserMessage(IMessage msg);
}
